home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
internet
/
irc_i_dodatki
/
eggdrop
/
eggdrop11.lha
/
scripts
/
ques3.tcl
< prev
next >
Wrap
Text File
|
1997-01-15
|
7KB
|
179 lines
#
# quesedilla, by robey
# v1 -- 20aug95
# v2 -- 2oct95 [improved it]
# v3 -- 17mar96 [fixed it up for 1.0 multi-channel]
#
# this will create an html file every so often (the default is once every
# 5 minutes). the html file will have a table showing the people currently
# on the channel, their user@hosts, who's an op, and who's idle. it
# uses a table which some browsers (and pseudo-browsers like lynx) can't
# see, but it can optionally make a second page which will support these
# archaic browsers. browsers supporting push-pull will receive the updated
# page automatically periodically.
#
# if you have a "url" field defined for a user, their nickname in the
# table will be a link pointing there. otherwise it checks the info
# line and comment field to see if they start with "http://" -- if so,
# that link will be used. as a last resort, it will make a "mailto:"
# link if an email address is recorded for the user.
#
# feel free to modify and play with this. the original was written in
# 15 minutes, then at various times i fixed bugs and added features.
# softlord helped me make the design look a little nicer. :) if you make
# any nifty improvements, please let me know.
# robey@netcom.com
## this line makes sure other scripts won't interfere
catch {unset webfile}
## for each channel you want a webfile for, do this:
set webfile(#turtle) "/home/robey/public_html/turtle.html"
set webfile(#gloom) "/home/robey/public_html/gloom.html"
## define these for channels you want alternate (lynx-friendly) web pages
## for: (the 'lynxfilerf' needs to be relative to your html directory)
set lynxfile(#turtle) "/home/robey/public_html/turtle-lynx.html"
set lynxfilerf(#turtle) "turtle-lynx.html"
## how often should these html files get updated?
## (1 means once every minute, 5 means once every 5 minutes, etc)
set web_update 5
## this will help people figure out what timezone you're in :)
set webtz [clock format 0 -format %Z]
## if that line breaks, you're using an older Tcl library and will have to
## set it manually like so:
#set webtz "PST"
proc do_ques {} {
global webfile lynxfile web_update botnick webtz lynxfilerf
foreach chan [array names webfile] {
if {[lsearch -exact [string tolower [channels]] [string tolower $chan]] == -1} {continue}
set fd [open $webfile($chan) w]
if {[info exists lynxfile($chan)]} {
set fdl [open $lynxfile($chan) w]
} else {
set fdl [open "/dev/null" w]
}
puts $fd "<meta http-equiv=\"Refresh\" content=[expr $web_update *60]>"
if {![onchan $botnick $chan]} {
puts $fd "<html><head><title>People on $chan right now</title></head>"
puts $fd "<body><h1>Oops!</h1><p>"
puts $fd "I'm not on $chan right now for some reason.<br>"
puts $fd "IRC isn't a very stable place these days... Please try again"
puts $fd "later!<p></body></html>"
puts $fdl "<html><head><title>People on $chan right now</title></head>"
puts $fdl "<body><h1>Oops!</h1><p>"
puts $fdl "I'm not on $chan right now for some reason.<br>"
puts $fdl "IRC isn't a very stable place these days... Please try again"
puts $fdl "later!<p></body></html>"
close $fd
close $fdl
} {
puts $fd "<html><head><title>People on $chan right now</title></head>"
puts $fd "<body><center><h1>$chan</h1>"
puts $fdl "<html><head><title>People on $chan right now</title></head>"
puts $fdl "<body><h1>$chan</h1>"
if {[info exists lynxfile($chan)]} {
puts $fd "<p>If this page looks screwy on your browser, try"
puts $fd "<a href=\"$lynxfilerf($chan)\">this page</a>.<p>"
}
puts $fd "<table border=1 cellpadding=4>"
puts $fd "<caption>People on $chan as of [date] [time] $webtz</caption>"
puts $fd "<th align=left>Nickname<th align=left>Status"
puts $fd "<th align=left>User@Host"
puts $fdl "<em>People on $chan as of [date] [time] $webtz</em><pre>"
puts $fdl "Nickname Status User@Host"
foreach i [chanlist $chan] {
puts $fd "<tr>"
if {[isop $i $chan]} { set chop "op"} { set chop "" }
if {[getchanidle $i $chan] > 10} {
if {$chop == ""} { set chop "idle" } { set chop "${chop}, idle" }
}
set handle [finduser $i![getchanhost $i $chan]]
if {[onchansplit $i $chan]} {
if {$chop == ""} {
set chop "<strong>(split)</strong>"
} {
set chop "${chop} <strong>(split)</strong>"
}
}
set url [user-get $handle url]
set info [getinfo $handle]
set comment [getcomment $handle]
if {"" == $chop} { set chop "-" }
set link ""
if {"" != $url} {
set link "<a href=\"$url\">"
}
if {("" == $link) &&
([string compare [string range $comment 0 6] "http://"] == 0)} {
set link "<a href=\"[lindex [split $comment] 0]\">"
}
if {("" == $link) &&
([string compare [string range $info 0 6] "http://"] == 0)} {
set link "<a href=\"[lindex [split $info] 0]\">"
}
if {"" == $link} {
set email [getemail $handle]
if {("" != $email) && ([string first @ $email] > 0)} {
set link "<a href=\"mailto:$email\">"
}
}
if {"" != $link} { set elink "</a>" } { set elink "" }
puts $fd "<td align=left>${link}${i}${elink}</td>"
puts $fd "<td align=left>${chop}</td>"
set chost [getchanhost $i $chan]
if {[string compare [string tolower $i] [string tolower $botnick]] == 0} {
set chost "<em>This is me, the channel bot.</em>"
set info ""
} {
if {[matchattr $handle b]} {
set chost "<em>This is another channel bot.</em>"
set info ""
}
}
puts $fd "<td align=left>${chost}</td>"
puts $fdl "${link}[format %-9s $i]${elink} [format %-16s $chop] $chost"
if {"" != $info} {
puts $fd "<tr><td></td><td colspan=2><strong>Info:</strong> $info</td>"
puts $fdl " <strong>Info:</strong> $info"
}
}
puts $fd "</table></center>"
puts $fdl "</pre>"
puts $fd "<p><hr><address>Created by quesedilla v3 via"
puts $fd "<a href=\"http://www.calweb.com/~xerxes/eggdrop/\">"
puts $fd "eggdrop</a></address>"
puts $fdl "<p><hr><address>Created by quesedilla v3 via"
puts $fdl "<a href=\"http://www.calweb.com/~xerxes/eggdrop/\">"
puts $fdl "eggdrop</a></address>"
puts $fd "<address>This page is automatically refreshed.</address>"
puts $fd "</body></html>"
puts $fdl "</body></html>"
close $fd
close $fdl
}
}
timer $web_update do_ques
}
if {![info exists ques_going]} {
timer $web_update do_ques
set ques_going 1
}
set xxchans ""
foreach i [array names webfile] {
set xxchans "$xxchans $i"
if {![info exists lynxfile($i)]} {
set xxchans "$xxchans (no lynx)"
}
set xxchans "${xxchans},"
}
set xxchans [string trimright $xxchans ","]
putlog "Quesedilla v3:$xxchans"
unset xxchans